#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<stdlib.h>
#include<errno.h>
#include<unistd.h>
#include<string.h>
#include<sys/mman.h>
#define LCD_SIZE 800*480*4

#if 0
int main(int argc, char const *argv[])
{
    //打开液晶屏文件
    int lcd_fd = open("/dev/fb0",O_RDWR);

    //给LCD设备映射一块内存(或称显存)
    char *p = mmap(NULL,LCD_SIZE,PROT_WRITE | PROT_READ,MAP_SHARED,lcd_fd,0);

    //通过映射内存，将LCD屏幕的每一个像素点涂成红色
    int red = 0x00FF0000;
    for(int i=0;i<800*480;i++)
    {
        memcpy(p+i*4,&red,4);
    }
    //解除映射
    munmap(p,LCD_SIZE);
    return 0;
}
#endif

#if 0
int main(int argc, char const *argv[])
{
    //打开液晶屏文件
    int lcd_fd = open("/dev/fb0",O_RDWR);

    //给LCD设备映射一块内存(或称显存)
    int *p = mmap(NULL,LCD_SIZE,PROT_WRITE | PROT_READ,MAP_SHARED,lcd_fd,0);

    //通过映射内存，将LCD屏幕的每一个像素点涂成绿色
    int color = 0x0000FF00;
    for(int i=0;i<800*480;i++)
    {
        memcpy(p+i,&color,4);
    }
    //解除映射
    munmap(p,LCD_SIZE);
    return 0;
}

#endif

#if 1
int main(int argc, char const *argv[])
{
    //打开液晶屏文件
    int lcd_fd = open("/dev/fb0",O_RDWR);

    //给LCD设备映射一块内存(或称显存)
    //PROT_WRITE 可写
    //PROT_READ  可读
    //MAP_SHARED 写操作同步
    int *p = mmap(NULL,LCD_SIZE,PROT_WRITE | PROT_READ,MAP_SHARED,lcd_fd,0);

    //设置颜色：蓝色
    int color = 0x000000FF;
    for(int i=0;i<800*480;i++)
    {
        memcpy(p+i,&color,sizeof(int));
        //p[i] = color;
    }
    munmap(p,LCD_SIZE);
    close(lcd_fd);
    return 0;
}
#endif